/**
 * 工具类，统一放在这里
*/
#ifndef UTILS_H
#define UTILS_H
#include <header.h>


/**
 * @brief 删除文件
*/
void deleteFile(const char *file);

/**
 * @brief 判断是.还是..
*/
int isthisOrSuper(char *path);


/**
 * @brief 文件则直接删除，目录则递归删除目录下的所有文件和目录
*/
void deleteDirectoryRecursion(char *path);

/**
 * @return 目录返回1，文件返回0，无此文件返回-1
*/
int isExistThisFileOrDirectory(const char *path);

/**
 * @brief 创建目录
*/

int makeDirectory(char *path);

// 用来判断一个目录是否是另一个目录的上级目录，是返回1，不是返回0
int isParentDirectory(const char *parent_dir, const char *child_dir);

// 处理LS命令，发送当下目录的文件和目录名称字符串
int dealListDirectoryContent(int net_fd,const char *paramater);

// 用来拼接路径用，比如paramater(绝对路径) 为 /dir/ 则path返回 root/dir/ 
// 如果是相对路径，则根据user.currentDirectory进行拼接 ，反正最后path都是返回root/xxx/xxx
// 注意这里没有进行路径合法判断
void stitchPaths(char *path,const char *paramater);

// 从配置文件获取value
int getValueByKeyFromConfig(char *key, char *value);
// 从配置文件中获取ip
char *getIpFromConfig();

// 从配置文件中获取port
char *getPortFromConfig();


// 判断用户运行路径下有没有同名文件
int errFileName(char *paramater);

// 阻塞读版recv
off_t putFileRecv(int netFd, void *ptr, off_t lenght);

#endif
